package com.hw.paltfrom.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;

import org.junit.Test;

public class DateTimeUtil {

	/**
	 * 获取当前时间 前/后 i分钟 的时间戳（+10 前十分钟，-10后 十分钟）
	 * 
	 * @return 字符串yyyy-MM-dd HH:mm:ss
	 * @author zero 2019/03/30
	 */
	public static long getAfterMinute(Integer i) {
		Calendar beforeTime = Calendar.getInstance();
		beforeTime.add(Calendar.MINUTE, i);// 5分钟之前的时间
		long timeInMillis = beforeTime.getTimeInMillis();
		return timeInMillis;
	}

	/*
	 * 获取当前时间 前/后 i年 的时间戳（+10 后十年，-10前 十年）
	 */
	public static long getAfterYear(Integer i) {
		Calendar beforeTime = Calendar.getInstance();
		beforeTime.add(Calendar.YEAR, i);// 5分钟之前的时间
		long timeInMillis = beforeTime.getTimeInMillis();
		return timeInMillis;
	}

	public static boolean handleDate(long time) {
		long now = new Date().getTime();
		long day = (now + (8 * 60 * 1000)) / (24 * 60 * 60 * 1000) - (time + (8 * 60 * 1000)) / (24 * 60 * 60 * 1000);
		// (now-time)/(……)的结果和上面的结果不一样噢

		if (day < 1) { // 今天
			return true;
		} else {
			return false;
		}
	}

	/*
	 * 获取n天的 00:00:00点~23:59:59 的时间戳范围 负数为几天前
	 */
	public static HashMap<String, Long> getAfterTimeRound(int days) {

		// 将+ days代码 改为 - days，就是同条件的几天前

		Calendar startCalendar = Calendar.getInstance();
		startCalendar.set(startCalendar.get(Calendar.YEAR), startCalendar.get(Calendar.MONTH),
				startCalendar.get(Calendar.DAY_OF_MONTH) - days, 0, 0, 0);
		long startTime = startCalendar.getTime().getTime();

		Calendar endCalendar = Calendar.getInstance();
		endCalendar.set(endCalendar.get(Calendar.YEAR), endCalendar.get(Calendar.MONTH),
				endCalendar.get(Calendar.DAY_OF_MONTH) - days, 23, 59, 59);
		long endTime = endCalendar.getTime().getTime();

		HashMap<String, Long> map = new HashMap<>();
		map.put("startTime", startTime);
		map.put("endTime", endTime);
		return map;

	}

	/**
	 * 获取指定年月的第一天
	 * 时间格式2019-02
	 * @param year
	 * @param month
	 * @return
	 */
	public static String getFirstDayOfMonth1(String v_month) {
		int year = Integer.valueOf(v_month.substring(0, 4));
		int month = Integer.valueOf(v_month.substring(5, 7));
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, month - 1);
		// 获取某月最小天数
		int firstDay = cal.getMinimum(Calendar.DATE);
		// 设置日历中月份的最小天数
		cal.set(Calendar.DAY_OF_MONTH, firstDay);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
		return sdf.format(cal.getTime());
	}

	/**
	 * 获取指定年月的最后一天
	 * 
	 * @param year
	 * @param month
	 * @return
	 */
	public static String getLastDayOfMonth1(String v_month) {
		int year = Integer.valueOf(v_month.substring(0, 4));
		int month = Integer.valueOf(v_month.substring(5, 7));
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, month - 1);
		// 获取某月最大天数
		int lastDay = cal.getActualMaximum(Calendar.DATE);
		// 设置日历中月份的最大天数
		cal.set(Calendar.DAY_OF_MONTH, lastDay);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
		//System.out.println(sdf.format(cal.getTime())+"1111111111111");
		return sdf.format(cal.getTime());
	}

	

	// 获取 指定月日前 一年的时间戳 ，例如指定 9月5号，获取去年 9月5号 00:00:00
	public static Long getAfterYear(int month, int day) {

		
		
		
		return null;

	}

//	 public static void main(String[] args) {
//		 String firstDayOfMonth1 = getFirstDayOfMonth1("2020-03");
//		 String lastDayOfMonth1 = getLastDayOfMonth1("2020-03");
//	 System.out.println(firstDayOfMonth1+" '"+lastDayOfMonth1);
//	 }
}